package showgo.modell.stueck;

import java.util.ArrayList;
import java.util.List;

/**
 * Eine Rolle ist an einem Theaterstueck beteiligt. Sie besteht, wie eine
 * Person, aus einem Namen, einem Alter, einem Geschlecht und einer gesamten
 * Textmenge, die die Rolle im Stueck zu sprechen hat.
 * 
 * @author lutz
 * 
 */
public class Rolle {

    private String rollenName;

    private int alter;

    private String geschlecht;

    private int textMenge;

    public Rolle(String rollenName, int alter, String geschlecht, int textMenge) {
	super();
	this.rollenName = rollenName;
	this.alter = alter;
	this.geschlecht = geschlecht;
	this.textMenge = textMenge;
    }

    public String getRollenName() {
	return rollenName;
    }

    public void setRollenName(String rollenName) {
	this.rollenName = rollenName;
    }

    public int getAlter() {
	return alter;
    }

    public void setAlter(int alter) {
	this.alter = alter;
    }

    public String getGeschlecht() {
	return geschlecht;
    }

    public void setGeschlecht(String geschlecht) {
	this.geschlecht = geschlecht;
    }

    public int getTextMenge() {
	return textMenge;
    }

    public void setTextMenge(int textMenge) {
	this.textMenge = textMenge;
    }

    public Rolle tiefeKopie() {
	String newRollenName = new String(rollenName);
	int newAlter = new Integer(alter);
	String newGeschlecht = new String(geschlecht);

	int neuTextMenge = new Integer(textMenge);

	Rolle newRolle = new Rolle(newRollenName, newAlter, newGeschlecht,
		neuTextMenge);
	return newRolle;
    }

    @Override
    public String toString() {
	String string = getRollenName() + " " + getGeschlecht() + " "
		+ getAlter() + " " + "ca: " + getTextMenge() + " Woerter";

	return string;
    }

    public List<String> spieltInAkten(Stueck stueck) {
	List<String> akte = new ArrayList<String>();

	for (int i = 0; i < stueck.getAkte().size(); i++) {
	    for (int j = 0; j < stueck.getAkte().get(i).getSzenen().size(); j++) {
		if (stueck.getAkte().get(i).getSzenen().get(j)
			.getRollenInSzene().contains(this.rollenName)) {
		    akte.add(stueck.getAkte().get(i).getAktID());
		}
	    }
	}

	return akte;
    }

    public List<String> spieltInSzenen(Stueck stueck) {
	List<String> szenen = new ArrayList<String>();

	for (int i = 0; i < stueck.getAkte().size(); i++) {
	    for (int j = 0; j < stueck.getAkte().get(i).getSzenen().size(); j++) {
		if (stueck.getAkte().get(i).getSzenen().get(j)
			.getRollenInSzene().contains(this.rollenName)) {
		    szenen.add(stueck.getAkte().get(i).getAktID()
			    + " - "
			    + stueck.getAkte().get(i).getSzenen().get(j)
				    .getSzenenID());
		}
	    }
	}

	return szenen;
    }

}
